#ifndef HUMAN_PLAYER_HPP_INCLUDED
#define HUMAN_PLAYER_HPP_INCLUDED

#include <boost/scoped_ptr.hpp>

#include <set>

#include "battle.hpp"
#include "info_panel_dialog.hpp"
#include "pathfind.hpp"
#include "player.hpp"
#include "tile_logic.hpp"
#include "unit.hpp"

namespace game {

class human_player : public player {
public:
	static const human_player* current_perspective();

	explicit human_player(wml::const_node_ptr node);
	~human_player();
	void play_turn(scenario& s);
	void draw(const scenario& scenario) const;

	void start_scenario();

	void recalculate_routes();

private:
	void process_battle(scenario& scenario);
	void find_attacks(scenario& scenario);
	hex::location mouseover_;
	unit_ptr selection_;

	//the last movement to be used has a free attack that won't use a command.
	const_unit_ptr free_attack_;

	hex::route_map routes_;

	std::set<hex::location> attacks_;

	battle_ptr battle_;

	gui::info_panel_dialog panel_;
};
}

#endif
